﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Negocio;
using Negocio.catalogos;
using Microsoft.Reporting.WebForms;

namespace Presentacion.controlasistencia
{
    public partial class ReportePerdidosCarrera : System.Web.UI.Page
    {
        catalogoCarrera _objCarrera = new catalogoCarrera();
        catalogoPeriodo _objPeriodo = new catalogoPeriodo();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Session["admin"] != null || Session["vicerrectorado"] != null || Session["secretaria"] != null)
                {
                    foreach (var item in _objCarrera.obtenerTodasCarreras())
                    {
                        ddlCarrera.Items.Add(new ListItem(item.carrera, item.idCarrera.ToString()));
                    }
                    foreach (var item in _objPeriodo.obtenerPeriodoxTOP().OrderByDescending(C=>C.idPeriodo))
                    {
                        ddlPeriodo.Items.Add(new ListItem(item.nombre, item.idPeriodo.ToString()));
                    }
                    ReportViewer1.Visible = false;
                }
            }
        }

        #region generar Reporte
        protected void btnReporteMensual_Click(object sender, EventArgs e)
        {
            catalogoPeriodo _objCatalogoPeriodo = new catalogoPeriodo();
            catalogoCabecera _objCatalogoCabecera = new catalogoCabecera();
            catalogoHorario _objHorarioClases = new catalogoHorario();
            encriptaje _objEncriptaje = new encriptaje();
            try
            {

                if (Session["admin"] != null || Session["vicerrectorado"] != null || Session["secretaria"] != null)
                {
                   
                    if (ddlPeriodo.SelectedItem.Value != "")//&& postE != "" && postE != null
                    {

                        int idPeriodoActual = int.Parse(ddlPeriodo.SelectedItem.Value.ToString());
                        #region novale
                        //int mes = int.Parse(postE);
                        //int contador = 0;
                        //ReportParameter[] reportParameter = new ReportParameter[13];//(resultCabecera.Count() * 4) + 29
                        //reportParameter[contador] = new ReportParameter("carrera", new catalogoCarrera().obtenerCarreraxID(Convert.ToInt32(ddlCarrera.SelectedValue)).FirstOrDefault().carrera);
                        //contador++;

                        //var mesesReporte = new Dictionary<int, string>();
                        //Negocio.catalogos.catalogoPeriodo _obj = new Negocio.catalogos.catalogoPeriodo();
                        //var inicioDeClases2 = new catalogoCalendarioAcademico().obtenerInicioANDFinDeClases(Convert.ToInt32(idPeriodoActual), "#00a65a");
                        //var finDeClases2 = new catalogoCalendarioAcademico().obtenerInicioANDFinDeClases(Convert.ToInt32(idPeriodoActual), "#0073b7");
                        //int diferencia = (finDeClases2.start.Value.Month - inicioDeClases2.start.Value.Month) + 12 * (finDeClases2.start.Value.Year - inicioDeClases2.start.Value.Year);
                        //var resultado = _obj.obtenerPeriodo(Convert.ToInt32(idPeriodoActual));
                        //if (diferencia > 0) //resultado.Count() > 0
                        //{

                        //    var fechaInicio = new catalogoCalendarioAcademico().obtenerInicioANDFinDeClases(Convert.ToInt32(idPeriodoActual), "#00a65a");
                        //    var fechaFin = new catalogoCalendarioAcademico().obtenerInicioANDFinDeClases(Convert.ToInt32(idPeriodoActual), "#0073b7");
                        //    //int meses = (fechaFin.Month - fechaInicio.Month) + 12 * (fechaFin.Year - fechaInicio.Year);
                        //    int meses = (fechaFin.start.Value.Month - fechaInicio.start.Value.Month) + 12 * (fechaFin.start.Value.Year - fechaInicio.start.Value.Year);
                        //    int numeroMes = 0;
                        //    string nombreMes = "";
                        //    for (int i = 0; i <= meses; i++)
                        //    {

                        //        //int filtro = fechaInicio.Month + i;
                        //        //int anio = fechaInicio.Year;
                        //        int filtro = fechaInicio.start.Value.Month + i;
                        //        int anio2 = fechaInicio.start.Value.Year;
                        //        if (filtro > 12)
                        //        {
                        //            filtro = filtro - 12;
                        //            //anio = fechaFin.Year;
                        //            anio2 = fechaFin.start.Value.Year;
                        //        }
                        //        switch (filtro)
                        //        {
                        //            case 1:
                        //                numeroMes = 1; nombreMes = "Enero";
                        //                mesesReporte.Add(numeroMes, nombreMes + "-" + anio2); break;
                        //            case 2:
                        //                numeroMes = 2; nombreMes = "Febrero";
                        //                mesesReporte.Add(numeroMes, nombreMes + "-" + anio2); break;
                        //            case 3:
                        //                numeroMes = 3; nombreMes = "Marzo";
                        //                mesesReporte.Add(numeroMes, nombreMes + "-" + anio2); break;
                        //            case 4:
                        //                numeroMes = 4; nombreMes = "Abril";
                        //                mesesReporte.Add(numeroMes, nombreMes + "-" + anio2); break;
                        //            case 5:
                        //                numeroMes = 5; nombreMes = "Mayo";
                        //                mesesReporte.Add(numeroMes, nombreMes + "-" + anio2); break;
                        //            case 6:
                        //                numeroMes = 6; nombreMes = "Junio";
                        //                mesesReporte.Add(numeroMes, nombreMes + "-" + anio2); break;
                        //            case 7:
                        //                numeroMes = 7; nombreMes = "Julio";
                        //                mesesReporte.Add(numeroMes, nombreMes + "-" + anio2); break;
                        //            case 8:
                        //                numeroMes = 8; nombreMes = "Agosto";
                        //                mesesReporte.Add(numeroMes, nombreMes + "-" + anio2); break;
                        //            case 9:
                        //                numeroMes = 9; nombreMes = "Septiembre";
                        //                mesesReporte.Add(numeroMes, nombreMes + "-" + anio2); break;
                        //            case 10:
                        //                numeroMes = 10; nombreMes = "Octubre";
                        //                mesesReporte.Add(numeroMes, nombreMes + "-" + anio2); break;
                        //            case 11:
                        //                numeroMes = 11; nombreMes = "Noviembre";
                        //                mesesReporte.Add(numeroMes, nombreMes + "-" + anio2); break;
                        //            case 12:
                        //                numeroMes = 12; nombreMes = "Diciembre";
                        //                mesesReporte.Add(numeroMes,nombreMes +"-"+ anio2); break;
                        //            default: break;
                        //        }

                        //    }

                        //    int contadorMes = 1;
                        //    foreach (var item in mesesReporte)
                        //    {
                        //        reportParameter[contador] = new ReportParameter("mes" +contadorMes,item.Value);
                        //        contador++;
                        //        reportParameter[contador] = new ReportParameter("NM" + contadorMes, contadorMes.ToString());
                        //        contador++;
                        //        contadorMes++;
                        //    }
                        //    if (contador==11)
                        //    {
                        //        reportParameter[contador] = new ReportParameter("mes" + contadorMes,"");
                        //        contador++;
                        //        reportParameter[contador] = new ReportParameter("NM" + contadorMes, "");
                        //        contador++;
                        //    }

                        //} 

                        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                        ////empiezo a recorer los meses de clases para poder sacar el porcentaje de faltas de cada uno de esos mes....
                        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                        //ReportViewer1.LocalReport.DataSources.Clear();

                        //ReportDataSource dataSourceAsistencia = new ReportDataSource();

                        //dataSourceAsistencia.Name = "dtsNoAprobadosCarrera";
                        //dataSourceAsistencia.Value = new catalogoReporte().reportenNoAprobadosTodosLosMeses(Convert.ToInt32(ddlPeriodo.SelectedValue), Convert.ToInt32(ddlCarrera.SelectedValue),Convert.ToInt32(ddlPorcentajes.SelectedValue));

                        //ReportViewer1.LocalReport.DataSources.Add(dataSourceAsistencia);

                        //ReportViewer1.LocalReport.ReportEmbeddedResource = "Presentacion.controlasistencia.reports.ReporteNoAprobadosCarrera.rdlc";
                        //ReportViewer1.LocalReport.ReportPath = "controlasistencia/reports/ReporteNoAprobadosCarrera.rdlc";

                        //ReportViewer1.LocalReport.SetParameters(reportParameter);
                        //ReportViewer1.LocalReport.GetParameters();
                        //ReportViewer1.Visible = true;
                        //ReportViewer1.DataBind();
                        //ReportViewer1.LocalReport.Refresh();
                        #endregion
                        reportesCredenciales credentials = new reportesCredenciales();
                        ReportViewer1.ServerReport.ReportServerCredentials = credentials;
                        ReportParameter[] RptParameters = new Microsoft.Reporting.WebForms.ReportParameter[4];
                        RptParameters[0] = new ReportParameter("Carrera", ddlCarrera.SelectedValue);
                        RptParameters[1] = new ReportParameter("Periodo", idPeriodoActual.ToString());
                        RptParameters[2] = new ReportParameter("porcentaje", ddlPorcentajes.SelectedValue);
                        RptParameters[3] = new ReportParameter("nCarrera", new catalogoCarrera().obtenerCarreraxID(Convert.ToInt32(ddlCarrera.SelectedValue)).FirstOrDefault().carrera);
                        ReportViewer1.Visible = true;
                        this.ReportViewer1.ServerReport.SetParameters(RptParameters);
                        ReportViewer1.ShowParameterPrompts = false;

                }
                else
                {
                        ClientScript.RegisterStartupScript(GetType(), "jsMensaje", "errorMessage('Seleccione el periodo');", true);
                        ReportViewer1.Visible = false;
                    }
                }

                    ddlPeriodo.ClearSelection();
                //}
                //else
                //{
                //    ClientScript.RegisterStartupScript(GetType(), "jsMensaje", "errorMessage('No existen datos para este reporte.');", true);
                //    ddlPeriodo.ClearSelection();
                //}
            }

           
            catch (Exception)
            {
                ClientScript.RegisterStartupScript(GetType(), "jsMensaje", "errorMessage('Error en el servidor intentelo de nuevo');", true);
                ReportViewer1.Visible = false;

            }

        }
        #endregion
    }
}